{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1ea5a8c3",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "import copy\n",
    "import random\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import torch\n",
    "from torch import nn\n",
    "from torch import optim\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "# from pylab import mpl\n",
    "# mpl.rcParams['font.sans-serif'] = ['SimHei']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8af6e606",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "### 数据预处理"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ed37bba8",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "将时间特征表示为当前一天内的分钟数、周几(周一用1表示，周二用2表示...)、是否为节假日（是用1表示，调休用0.5表示，其他用0表示）、年份（2021用1表示，2022用2表示，2023用3表示）。    \n",
    "2022年和2023年元宵节附近10来天电力负荷出现了很明显的下降，2021年在农历腊月十几电力负荷出现了明显的下降，持续时间和强度与2022和2023年年初类似，但却不是在元宵节期间，不知道为什么会明显下降。  \n",
    "一年中不同时间负荷的变化受所在地区气候的影响比较大，可以用气象信息包含，不再加入月份特征。  \n",
    "突发情况可由人工调节。  \n",
    "将分类特征用单个数值表示，比较简便，但可能对模型的性能造成影响。感觉比较好的是用one-hot(太稀疏)或embedding。  \n",
    "模型的预测结果作为参考，最终的预测还需要人工的参与、修正。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "6e16020d",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "data = pd.read_csv('../data/gfdf_with_cloud_1.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "6abca02f",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>time</th>\n",
       "      <th>value</th>\n",
       "      <th>weather_status</th>\n",
       "      <th>temperature</th>\n",
       "      <th>humidity</th>\n",
       "      <th>wind_speed</th>\n",
       "      <th>wind_level</th>\n",
       "      <th>wind_direction_angle</th>\n",
       "      <th>wind_direction</th>\n",
       "      <th>pressure</th>\n",
       "      <th>visibility</th>\n",
       "      <th>precipitation</th>\n",
       "      <th>light</th>\n",
       "      <th>holiday</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>2021/1/1 0:00</td>\n",
       "      <td>3210.842464</td>\n",
       "      <td>1</td>\n",
       "      <td>'-8.6'</td>\n",
       "      <td>'41'</td>\n",
       "      <td>'0.5'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'359'</td>\n",
       "      <td>'鍖楅'</td>\n",
       "      <td>'977'</td>\n",
       "      <td>'9.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>2021/1/1 0:15</td>\n",
       "      <td>3104.507008</td>\n",
       "      <td>1</td>\n",
       "      <td>'-8.88'</td>\n",
       "      <td>'43.00'</td>\n",
       "      <td>'0.5'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'359'</td>\n",
       "      <td>'鍖楅'</td>\n",
       "      <td>'977'</td>\n",
       "      <td>'9.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>2021/1/1 0:30</td>\n",
       "      <td>3037.705984</td>\n",
       "      <td>1</td>\n",
       "      <td>'-9.16'</td>\n",
       "      <td>'45.00'</td>\n",
       "      <td>'0.5'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'359'</td>\n",
       "      <td>'鍖楅'</td>\n",
       "      <td>'977'</td>\n",
       "      <td>'9.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>2021/1/1 0:45</td>\n",
       "      <td>2960.176288</td>\n",
       "      <td>1</td>\n",
       "      <td>'-9.44'</td>\n",
       "      <td>'47.00'</td>\n",
       "      <td>'0.5'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'359'</td>\n",
       "      <td>'鍖楅'</td>\n",
       "      <td>'977'</td>\n",
       "      <td>'9.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>2021/1/1 1:00</td>\n",
       "      <td>2889.226528</td>\n",
       "      <td>3</td>\n",
       "      <td>'-9.7'</td>\n",
       "      <td>'49'</td>\n",
       "      <td>'0.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'335'</td>\n",
       "      <td>'瑗垮寳椋?</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'8.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75547</th>\n",
       "      <td>75547</td>\n",
       "      <td>2023/2/26 22:45</td>\n",
       "      <td>5649.941920</td>\n",
       "      <td>1</td>\n",
       "      <td>'5.85'</td>\n",
       "      <td>'64.75'</td>\n",
       "      <td>'1.6'</td>\n",
       "      <td>'17'</td>\n",
       "      <td>'250'</td>\n",
       "      <td>'瑗块'</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'5.2'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75548</th>\n",
       "      <td>75548</td>\n",
       "      <td>2023/2/26 23:00</td>\n",
       "      <td>5451.523744</td>\n",
       "      <td>1</td>\n",
       "      <td>'5.5'</td>\n",
       "      <td>'66'</td>\n",
       "      <td>'1'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'124'</td>\n",
       "      <td>'涓滃崡椋?</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'4.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75549</th>\n",
       "      <td>75549</td>\n",
       "      <td>2023/2/26 23:15</td>\n",
       "      <td>5246.500000</td>\n",
       "      <td>1</td>\n",
       "      <td>'5.15'</td>\n",
       "      <td>'67.25'</td>\n",
       "      <td>'1'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'124'</td>\n",
       "      <td>'涓滃崡椋?</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'4.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75550</th>\n",
       "      <td>75550</td>\n",
       "      <td>2023/2/26 23:30</td>\n",
       "      <td>5039.924704</td>\n",
       "      <td>1</td>\n",
       "      <td>'4.80'</td>\n",
       "      <td>'68.50'</td>\n",
       "      <td>'1'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'124'</td>\n",
       "      <td>'涓滃崡椋?</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'4.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75551</th>\n",
       "      <td>75551</td>\n",
       "      <td>2023/2/26 23:45</td>\n",
       "      <td>4873.622464</td>\n",
       "      <td>1</td>\n",
       "      <td>'4.45'</td>\n",
       "      <td>'69.75'</td>\n",
       "      <td>'1'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'124'</td>\n",
       "      <td>'涓滃崡椋?</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'4.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>75552 rows × 15 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       Unnamed: 0             time        value  weather_status temperature  \\\n",
       "0               0    2021/1/1 0:00  3210.842464               1      '-8.6'   \n",
       "1               1    2021/1/1 0:15  3104.507008               1     '-8.88'   \n",
       "2               2    2021/1/1 0:30  3037.705984               1     '-9.16'   \n",
       "3               3    2021/1/1 0:45  2960.176288               1     '-9.44'   \n",
       "4               4    2021/1/1 1:00  2889.226528               3      '-9.7'   \n",
       "...           ...              ...          ...             ...         ...   \n",
       "75547       75547  2023/2/26 22:45  5649.941920               1      '5.85'   \n",
       "75548       75548  2023/2/26 23:00  5451.523744               1       '5.5'   \n",
       "75549       75549  2023/2/26 23:15  5246.500000               1      '5.15'   \n",
       "75550       75550  2023/2/26 23:30  5039.924704               1      '4.80'   \n",
       "75551       75551  2023/2/26 23:45  4873.622464               1      '4.45'   \n",
       "\n",
       "      humidity wind_speed wind_level wind_direction_angle wind_direction  \\\n",
       "0         '41'      '0.5'        '0'                '359'          '鍖楅'   \n",
       "1      '43.00'      '0.5'        '0'                '359'          '鍖楅'   \n",
       "2      '45.00'      '0.5'        '0'                '359'          '鍖楅'   \n",
       "3      '47.00'      '0.5'        '0'                '359'          '鍖楅'   \n",
       "4         '49'      '0.7'        '0'                '335'         '瑗垮寳椋?   \n",
       "...        ...        ...        ...                  ...            ...   \n",
       "75547  '64.75'      '1.6'       '17'                '250'          '瑗块'   \n",
       "75548     '66'        '1'        '0'                '124'         '涓滃崡椋?   \n",
       "75549  '67.25'        '1'        '0'                '124'         '涓滃崡椋?   \n",
       "75550  '68.50'        '1'        '0'                '124'         '涓滃崡椋?   \n",
       "75551  '69.75'        '1'        '0'                '124'         '涓滃崡椋?   \n",
       "\n",
       "      pressure visibility precipitation light  holiday  \n",
       "0        '977'      '9.7'           '0'   '0'      1.0  \n",
       "1        '977'      '9.7'           '0'   '0'      1.0  \n",
       "2        '977'      '9.7'           '0'   '0'      1.0  \n",
       "3        '977'      '9.7'           '0'   '0'      1.0  \n",
       "4        '976'      '8.6'           '0'   '0'      1.0  \n",
       "...        ...        ...           ...   ...      ...  \n",
       "75547    '976'      '5.2'           '0'   '0'      0.0  \n",
       "75548    '976'      '4.6'           '0'   '0'      0.0  \n",
       "75549    '976'      '4.6'           '0'   '0'      0.0  \n",
       "75550    '976'      '4.6'           '0'   '0'      0.0  \n",
       "75551    '976'      '4.6'           '0'   '0'      0.0  \n",
       "\n",
       "[75552 rows x 15 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "50106272",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 75552 entries, 0 to 75551\n",
      "Data columns (total 15 columns):\n",
      " #   Column                Non-Null Count  Dtype  \n",
      "---  ------                --------------  -----  \n",
      " 0   Unnamed: 0            75552 non-null  int64  \n",
      " 1   time                  75552 non-null  object \n",
      " 2   value                 75552 non-null  float64\n",
      " 3   weather_status        75552 non-null  int64  \n",
      " 4   temperature           75552 non-null  object \n",
      " 5   humidity              75552 non-null  object \n",
      " 6   wind_speed            75552 non-null  object \n",
      " 7   wind_level            75552 non-null  object \n",
      " 8   wind_direction_angle  75552 non-null  object \n",
      " 9   wind_direction        75552 non-null  object \n",
      " 10  pressure              75552 non-null  object \n",
      " 11  visibility            75552 non-null  object \n",
      " 12  precipitation         75552 non-null  object \n",
      " 13  light                 75552 non-null  object \n",
      " 14  holiday               75552 non-null  float64\n",
      "dtypes: float64(2), int64(2), object(11)\n",
      "memory usage: 8.6+ MB\n"
     ]
    }
   ],
   "source": [
    "data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "93ea6d62",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "33565      134.39680\n",
       "60009      142.00000\n",
       "60011      142.00000\n",
       "60012      142.00000\n",
       "60013      142.00000\n",
       "            ...     \n",
       "55836    10089.16566\n",
       "55837    10089.32032\n",
       "59105    10092.06246\n",
       "59104    10095.52374\n",
       "55838    10113.88000\n",
       "Name: value, Length: 75552, dtype: float64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['value'].sort_values()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "c9e438ae",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "33565     134.396800\n",
       "60009     142.000000\n",
       "60011     142.000000\n",
       "60012     142.000000\n",
       "60013     142.000000\n",
       "60014     142.000000\n",
       "60015     142.000000\n",
       "60057     142.000000\n",
       "60010     142.000000\n",
       "2524     1142.851840\n",
       "2525     1147.319296\n",
       "2523     1151.860864\n",
       "2516     1153.393504\n",
       "2519     1153.741312\n",
       "2517     1155.662752\n",
       "2522     1156.089664\n",
       "2514     1156.364224\n",
       "2520     1156.569280\n",
       "2521     1156.853824\n",
       "2620     1157.596960\n",
       "Name: value, dtype: float64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['value'].sort_values()[:20]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "1ae186ab",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "53340     9410.317216\n",
       "60924     9410.851552\n",
       "56030     9411.538720\n",
       "57830     9411.738400\n",
       "57832     9411.755296\n",
       "             ...     \n",
       "55836    10089.165660\n",
       "55837    10089.320320\n",
       "59105    10092.062460\n",
       "59104    10095.523740\n",
       "55838    10113.880000\n",
       "Name: value, Length: 1000, dtype: float64"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['value'].sort_values()[-1000:]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f8280272",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "电力负荷的最大值没发现异常，最小值发现了异常"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b1a8ea7e",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "电力负荷的数值存在9个100多的，为异常点，可能是发生了突发情况。为更好训练模型，需要对异常值进行处理。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c38cd46f",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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dJyjUq1WU+mq5JQxp+RLZ36p6DgAAACH7JBL3N27d2fOnDl54oknkiSrVq3KzJkzM2vWrHzve9/be+6OO+7IRRddlDlz5mTjxo0HPAsAAADUllKplLaWtry++fU8vebpouMclRfWv5BV76zKvOZ5qa+rLzoOAADAITukEnfXrl25/vrrs2bNmr3Xvv71r+c73/lOnn766SxatChr1qzJ4sWL88wzz+T555/Pt771rdxxxx37PQsAAADUpqEyqVzprCQxpQwAAAw+h3wn7ve///189rOfTZJs2rQpb7zxRmbPnp1SqZSrr746jz/+eJYsWZKvfe1rqauryxVXXJFnn312v2cBAACA2jTj5BmZPnF6Fi1blN29u4uOc0T2TClPmTAln5/8+aLjAAAAHJZDKnGbmpoyefLkve9v2bIlU6ZM2fv+hAkTsm7duo9cL5VK6e7u3u/Z33fnnXdm8uTJex9bt2494icFAAAAHLlSqZRySzlvb3s7P3r5R0XHOSI/W/uzrHl/TVqbW1NXOuR/ww4AAFATjuhPMePHj093d/fe97ds2ZJqtfqx65s3b97v2d/3zW9+M2vXrt37GDt27JFEAwAAAPrBngniwTqpbEoZAAAYzI6oxJ0wYUKS7L2j9vnnn88555yTWbNm5bHHHkuSrFy5MhMnTtzvWQAAAKB2nXvCuZk5aWbuXXFvtu/eXnScw9Lb15uFyxbmvBPOy6dP/XTRcQAAAA7bEe8Jffvb3851112XP/mTP8kLL7yQ6667Ltdff31+9rOf5fbbb8+8efPyjW98Y79nAQAAgNpWbiln666teejFh4qOclieWvNU1m9dn7aWtpRKpaLjAAAAHLZSdV/bxodo2bJlWbp0aa655pqMHz8+SbJjx44sXrw4kyZNysyZMw949kAmT56ctWvXHmk0AAAA4Ci9ueXNTL5zcm668Kbc03pP0XEO2T/7wT/L937xvXT9SVemT5xedBwAAIB9OlAfelQl7kBS4gIAAEDxZv//ZueZ15/JW996KxNGTig6zkHt7t2d0/7DaTl93On5zR//pug4AAAA+3WgPvSI55QBAACAoW/+jPnZ2bsz9664t+goh+SxVx7LO9vfSWtza9FRAAAAjpgSFwAAANivW6fdmsa6xixYuqDoKIek0llJkrS2KHEBAIDBS4kLAAAA7Nfxo47PV8/9ah57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n/0sL7/8ctGRAHrt5JNPzsaNG9Pd3Z01a9akoaGh6EgAvXLjjTfm7LPPTpLs3r07zz//fC688MLU1NTkoosuyv33319wQoAj86/n2ejRo3P77bdnzJgxOXToUHbt2pWTTz654IRDlxIXGDA7d+7Md7/7XU/iAketL3zhC/nhD3+YcePGFR0FoM9++ctfpqenJ9dff30aGxszZ86c9PT0FB0LoFc+9KEPZe/evfnRj36Uv/zlL7niiiuKjgRwxEaOHJkpU6Ycft3V1ZX6+vrDr8ePH59t27YVEQ2gV958nv2r66+/PhdccEFOOeWUKqc6dowoOgAwNBw4cCDNzc35zne+k9NOO63oOAC9dtNNN2XatGk577zzcs899xQdB6DP/vSnP+Xzn/986uvrU19fn9GjR2fTpk0544wzio4GcMS++tWvZsmSJZk+fXr27t2bD37wg3n88ceLjgXQJ7W1tenu7j78uqury3dIAke1lStX5o477sh9991XdJQhTYkL9NuhQ4fS0tKSefPmZeHChUXHAeiT2267Lbt3786cOXPy3HPPZfTo0Rk/fnwWLFhQdDSAXmloaMjGjRuTvD4pZcuWLZk8eXLBqQB6p7u7O48++mimT5+eBx98sOg4AP0yfvz4JMm2bdsyceLErF27Np/85CeLDQXQR7///e/zjW98I6tWrcqYMWOKjjOkKXGBfrvpppuycuXKvPzyy/nNb36Turq6tLe3Fx0LoFd++9vfHv59yZIlmTp1qgIXOCp97nOfy+LFi3P++ednx44due666zJ27NiiYwH0yre+9a1cddVV+fKXv5yJEyfmxz/+cdGRAPrl61//ei655JLMmjUrf/3rX3PjjTcWHQmgT5qbm1NbW5tFixYleX2Cyrx58wpONTTVVMxtAAAAAACAQbV+/fqsW7cun/jEJ1JbW1t0HABKTokLAAAAAAAAUCLDig4AAAAAAAAAwD8pcQEAAAAAAABKRIkLAAAAAAAAUCJKXAAAAAAAAIASUeICAAAAAAAAlIgSFwAAAAAAAKBE/g+bt68/AGgG7wAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 2400x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(30, 10), dpi=80)\n",
    "\n",
    "X = np.linspace(1, 12, 10, endpoint=True)\n",
    "C = np.array(data['value'][33560: 33570])\n",
    "plt.plot(X, C, color='green')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4a63f95d",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "对序号为33565这条数据，使用其前一个时刻和后一个时刻负荷的平均值代替其的负荷值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "39eb9f82",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "data.loc[33565, 'value'] = (data.loc[33564]['value'] + data.loc[33566]['value']) / 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "dbc393fa",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6791.646016"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.loc[33565]['value']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "86b04a24",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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uAC0rJMjlQdHPI0LAAAANLdHtj2S4+PH09fbV3QUAFqAEheAllXp+VmJa6QyAAAA0OTswwXgXChxAWhZKxauyKrFq1IfqRcdBQAAAOBj1YZquWreVfncFZ8rOgoALUCJC0BLq/ZUM7JvJNv2bSs6CgAAAMBp7dy/My/tfin9q/pTKpWKjgNACzirEveaa67J+vXrs379+vze7/1eXn311axZsybr1q3L9773vVPn7rvvvtxwww358pe/nN27dyfJR54FgMlwai+ukcoAAABAkxoYHkiS9PcapQzA2ek604Gf/vSnuf766/Nf/+t/PXVt7dq1uf/++1OpVNLX15cvfelLeemll7Jly5Zs3bo1GzduzH333Ze//Mu/zNe//vUPnV2xYsWU3hQA7WN9eX2SpD5Sz29e/5uFZgEAAAA4nZP7cO/pvafgJAC0ijM+ifvII4/k2WefzW233ZZbb701Tz/9dHbu3JlqtZpSqZQvfvGLGRwczEMPPZSvfe1r6ejoSKVSyeOPP559+/ad9uzpfPe73013d/epj4MHD076zQIw/SydvzSfufwzGRwdTKPRKDoOAAAAwAdMNCby8PDDuf6q63PlvCuLjgNAizhjiXvdddelVqvlscceyx/90R/lV37lVz7wJO3ChQuza9euHDhw4NT1UqmUQ4cOfeDa+8+ezr333psdO3ac+pg3b96F3hsAbaJSrmTH/h356Z6fFh0FAAAA4ANeeOOF7D68O329fUVHAaCFnLHE/exnP5trrrkmSXLDDTdkz549OXTo0Kn3Dxw4kEajkQULFnzg+v79+z907eRZAJhM1Z5qEntxAQAAgOZzcpRy/yr7cAE4e2cscX/zN38zDz30UJLkv/yX/5Jbb701SU49Ubt169b09vZm3bp12bBhQ5LklVdeyZIlS7Jw4cLTngWAyXRX+a4kSlwAAACg+dSGa5ndNTu3r7i96CgAtJCuMx34gz/4g/zKr/xKvvWtb6W7uzv/9t/+2zz22GP5yle+krVr1+b555/PAw88kM7OznznO9/JN77xjWzevDnf/OY3kyTf/va3P3QWACbT5ZdcnuuuvC6DI+/txS2VSkVHAgAAAMih44fy6PZHUylXMrtrdtFxAGghpcZ5zjd++eWX8+KLL+ZLX/pSFixYkCQ5evRoHnzwwSxbtixr1qz52LNn0t3dnR07dpxP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",
      "text/plain": [
       "<Figure size 2400x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(30, 10), dpi=80)\n",
    "\n",
    "X = np.linspace(1, 14, 13, endpoint=True)\n",
    "C = np.array(data['value'][60006: 60019])\n",
    "plt.plot(X, C, color='green')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "db1e3dca",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "对序号为60009到60015这7条数据，使用序号为60008和60016数据的负荷的平均值代替他们的负荷值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "999c45dc",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "data.loc[60009: 60015, 'value'] = (data.loc[60008]['value'] + data.loc[60016]['value']) / 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "8a92d519",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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q2rTqW2nopMAAApl3AUAmM76/qVv9lthvzz22WM56bGTis4BAIBGaVLDpOx4x475asRXuWKzK7JE9yWKTgIAKJxxFwCgABdsfEFWmmulnPX0Wbn7/buLzgEAgEbnzKfOzEMfP5Q9ltsjOy6zY9E5AACNwhSPuyNGjMhWW22V1VdfPSuvvHLefffdfPDBB1lppZWy2mqr5corr/z52OOPPz49e/ZMr169MmTIkCT51WMBAFqC/72s3MwdZs5Od+yUj4d+XHQSAAA0Gv/69F85+YmT85fZ/pJ/bPqPonMAABqNKR53b7jhhiy//PJ55plncsopp+Tkk0/OjjvumLPPPjvPPPNMamtrM2jQoAwYMCDPPvtsBg4cmCOOOCLHH398kvzisQAALck8XefJLdvekuHjhqeytjJjJowpOgkAAAr3zchvsn399unYpmNqq2rToU2HopMAABqNKR53Z5999rz//vsZNWpUXnrppSyxxBL58ssvs95666WsrCwbb7xxHnvssTz44IPp27dvysvLs+666+a5557LTz/99IvH/qcLLrggPXr0+Plr5MiRf+pkAQAam40X2jgnr3NyXvvmtRxw/wFF5wAAQKEmNUzKdvXb5dtR3+bqLa7OIjMvUnQSAECjMsXj7pprrpnRo0fn4osvzquvvpr11lsv88wzz8/Pd+3aNV9//XVGjBjx8+NlZWUZNWrUvz32f4/9T4cddlgGDx7881fnzp2nNBcAoNE6Ya0TsulCm+ba167NNa9cU3QOAAAU5uTHT87jnz2e/VbYL72X6l10DgBAo9N6Sn/wyCOPzMknn5xlllkmo0ePzpJLLpkuXbr8/PyIESNSKpXSpUuXjBo16ufHhw8f/l+P/e+xAAAtUXlZeW7a5qb0vKpn9r9//yw3x3LpOUfPorMAAGC6evCjB3PGU2ek5xw9c8HGFxSdAwDQKE3xJ3dHjRqVV155JUnyxBNPZIYZZkiSnz+BO3DgwCywwAJZbbXV8uijjyZJ3n///XTv3j1du3b9xWMBAFqqmTvOnLqqupRSSmVNZX4c82PRSQAAMN0MHj44O9yxQ7q065Laqtq0a92u6CQAgEaprDSFH5l97bXXsscee+S9997LHHPMkcsvvzzfffddzj///Ky88sp57LHHMnDgwLRq1SprrLFGVllllTz11FPZf//9s9dee6Vfv37/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nQcffLDoFICyM3fu3PTp0ye9evXKLrvskieffLLoJICysmDBguy777559NFHc/LJJ+fSSy8tOgmgbA0cODA33HBD0RkAZWeLLbZIjx490qNHj4wcObLoHICydMMNN2To0KFFZzQqzYoOoBiLFy9Onz59Mm3atKJTAMrS6NGjM2jQoAwaNCj33XdfRo4cmYkTJxadBVA2nnnmmZx22mk5+OCD8+yzz2bYsGE56aSTis4CKDvV1dW56667sv/++xedAlBWpk6dmh133DG1tbVFpwCUrVdeeSUXXnhhHnnkkaJTGhX/uduIXXPNNdl5552LzgAoS8cff3wGDRqUJJk+fXo6duxYcBFAedl1111z8MEHZ8qUKTnnnHMyePDgopMAys706dNzwQUX5Pjjjy86BaDsPPTQQ3n66aezxx57ZLfddvONXABfUF1dXQ4//PB07do1N910U2bOnFl0UqNh3G2kWrRokc6dOxedAVD2ZsyYkXPOOcfXNwEsp4kTJ+aFF17I+uuvX3QKQNk57rjjcvHFF6dt27ZFpwCUnR122CGTJk3KI488klGjRmX48OFFJwGUlVtuuSV1dXX5xS9+ka5du6ZHjx6pq6srOqtRMO4CwHJavHhxBgwYkLPPPjubb7550TkAZemkk05KTU1NTj311KJTAMrKtddem2222SZ77rln0SkAZalr167ZYostkiTdunXLCy+8UHARQHl54okncuyxx6ZLly7p2bNnWrVqlalTpxad1Sh45i4ALIdly5Zl4MCBOfDAA1NVVVV0DkDZufzyyzN9+vScffbZmTlzZtZee+2ikwDKyh133JFZs2alR48eee2119KqVau0b98+ffv2LToNoCwMGTIkRx11VPbbb7+MHTvW4+sAvqBtt902U6ZMSfK/3274xhtvpFOnTgVXNQ4VpVKpVHQExRkyZEiGDBmSHj16FJ0CUFauuuqqnHTSSfna176WJOnQoUNqamoKrgIoH/Pnz8/hhx+ed955Jy1btsxll12Wrl27Fp0FUJbOPPPMbLrpphkyZEjRKQBl4+WXX87AgQOzePHidO7cOVdccUU22WSTorMAysbChQtz/PHH55VXXsm7776bH//4xznyyCOLzmoUjLsAAAAAAAAAZcAzdwEAAAAAAADKgHEXAAAAAAAAoAwYdwEAAAAAAADKgHEXAAAAAAAAoAwYdwEAAAAAAADKgHEXAAAAAAAAoAwYdwEAAAAAAADKwP8DNZbTOpKekwgAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 2400x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(30, 10), dpi=80)\n",
    "\n",
    "X = np.linspace(1, 6, 5, endpoint=True)\n",
    "C = np.array(data['value'][60055: 60060])\n",
    "plt.plot(X, C, color='green')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7b1f7d0e",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "对序号为60057这条数据，使用其前一个时刻和后一个时刻负荷的平均值代替其的负荷值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "ef20994b",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "data.loc[60057, 'value'] = (data.loc[60056]['value'] + data.loc[60058]['value']) / 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "45c34900",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9473.481759999999"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.loc[60057, 'value']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1ffaa538",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "将时间分成年、月、日、分钟数，并将一天内的分钟数作为一个特征。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "8c1d7898",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "list1 = [i.split('/') for i in data['time']]\n",
    "list2 = [i[-1].split(' ') for i in list1]\n",
    "list3 = [i[-1].split(':') for i in list2]\n",
    "list4 = [int(i[0]) * 60 + int(i[1]) for i in list3]  # 分钟\n",
    "minute = np.array(list4).reshape(len(data), 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "03f376e6",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "生成星期特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "d7d886bc",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "112.42857142857143\n",
      "3\n"
     ]
    }
   ],
   "source": [
    "# 2021-1-1为周五\n",
    "week = np.empty(len(data))\n",
    "print(len(data)/(96*7))  # 有余数\n",
    "print(len(data) % (96*7) // 96)  # 剩余的天数\n",
    "for i in range(len(data)//(96*7)):\n",
    "    m = i * 96 * 7\n",
    "    week[m:m+96] = 5\n",
    "    week[m+96: m+96*2] = 6\n",
    "    week[m+96*2: m+96*3] = 7\n",
    "    week[m+96*3: m+96*4] = 1\n",
    "    week[m+96*4: m+96*5] = 2\n",
    "    week[m+96*5: m+96*6] = 3\n",
    "    week[m+96*6: m+96*7] = 4\n",
    "week[m+96*7: m+96*8] = 5\n",
    "week[m+96*8: m+96*9] = 6\n",
    "week[m+96*9: m+96*10] = 7\n",
    "week = week.reshape(len(data), 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "f3760adc",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('float64')"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "week.dtype"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b67fe3c4",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "生成年份特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "635eb9e0",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "year = np.empty(len(data))\n",
    "year[: 96*365] = 1\n",
    "year[96*365: 96*365*2] = 2\n",
    "year[96*365*2: ] = 3\n",
    "year = year.reshape(len(data), 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "b4c7d706",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('float64')"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "year.dtype"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2a59b47f",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "将新特征与原dataframe拼接起来，并删去多余的列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "87563523",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "array1 = np.concatenate((minute,week,year), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "fff57c69",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(75552, 3)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "array1.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "2c9e59ca",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "df_1 = pd.DataFrame(array1, columns=['minute', 'week', 'year'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "ce387e74",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "new_data = pd.concat((data, df_1), axis=1).drop(['Unnamed: 0', 'wind_direction', 'time'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "2318b0ee",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>value</th>\n",
       "      <th>weather_status</th>\n",
       "      <th>temperature</th>\n",
       "      <th>humidity</th>\n",
       "      <th>wind_speed</th>\n",
       "      <th>wind_level</th>\n",
       "      <th>wind_direction_angle</th>\n",
       "      <th>pressure</th>\n",
       "      <th>visibility</th>\n",
       "      <th>precipitation</th>\n",
       "      <th>light</th>\n",
       "      <th>holiday</th>\n",
       "      <th>minute</th>\n",
       "      <th>week</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3210.842464</td>\n",
       "      <td>1</td>\n",
       "      <td>'-8.6'</td>\n",
       "      <td>'41'</td>\n",
       "      <td>'0.5'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'359'</td>\n",
       "      <td>'977'</td>\n",
       "      <td>'9.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3104.507008</td>\n",
       "      <td>1</td>\n",
       "      <td>'-8.88'</td>\n",
       "      <td>'43.00'</td>\n",
       "      <td>'0.5'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'359'</td>\n",
       "      <td>'977'</td>\n",
       "      <td>'9.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>1.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3037.705984</td>\n",
       "      <td>1</td>\n",
       "      <td>'-9.16'</td>\n",
       "      <td>'45.00'</td>\n",
       "      <td>'0.5'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'359'</td>\n",
       "      <td>'977'</td>\n",
       "      <td>'9.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>1.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2960.176288</td>\n",
       "      <td>1</td>\n",
       "      <td>'-9.44'</td>\n",
       "      <td>'47.00'</td>\n",
       "      <td>'0.5'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'359'</td>\n",
       "      <td>'977'</td>\n",
       "      <td>'9.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>1.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2889.226528</td>\n",
       "      <td>3</td>\n",
       "      <td>'-9.7'</td>\n",
       "      <td>'49'</td>\n",
       "      <td>'0.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'335'</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'8.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>1.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75547</th>\n",
       "      <td>5649.941920</td>\n",
       "      <td>1</td>\n",
       "      <td>'5.85'</td>\n",
       "      <td>'64.75'</td>\n",
       "      <td>'1.6'</td>\n",
       "      <td>'17'</td>\n",
       "      <td>'250'</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'5.2'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1365.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75548</th>\n",
       "      <td>5451.523744</td>\n",
       "      <td>1</td>\n",
       "      <td>'5.5'</td>\n",
       "      <td>'66'</td>\n",
       "      <td>'1'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'124'</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'4.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1380.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75549</th>\n",
       "      <td>5246.500000</td>\n",
       "      <td>1</td>\n",
       "      <td>'5.15'</td>\n",
       "      <td>'67.25'</td>\n",
       "      <td>'1'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'124'</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'4.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1395.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75550</th>\n",
       "      <td>5039.924704</td>\n",
       "      <td>1</td>\n",
       "      <td>'4.80'</td>\n",
       "      <td>'68.50'</td>\n",
       "      <td>'1'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'124'</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'4.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1410.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75551</th>\n",
       "      <td>4873.622464</td>\n",
       "      <td>1</td>\n",
       "      <td>'4.45'</td>\n",
       "      <td>'69.75'</td>\n",
       "      <td>'1'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'124'</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'4.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>75552 rows × 15 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             value  weather_status temperature humidity wind_speed wind_level  \\\n",
       "0      3210.842464               1      '-8.6'     '41'      '0.5'        '0'   \n",
       "1      3104.507008               1     '-8.88'  '43.00'      '0.5'        '0'   \n",
       "2      3037.705984               1     '-9.16'  '45.00'      '0.5'        '0'   \n",
       "3      2960.176288               1     '-9.44'  '47.00'      '0.5'        '0'   \n",
       "4      2889.226528               3      '-9.7'     '49'      '0.7'        '0'   \n",
       "...            ...             ...         ...      ...        ...        ...   \n",
       "75547  5649.941920               1      '5.85'  '64.75'      '1.6'       '17'   \n",
       "75548  5451.523744               1       '5.5'     '66'        '1'        '0'   \n",
       "75549  5246.500000               1      '5.15'  '67.25'        '1'        '0'   \n",
       "75550  5039.924704               1      '4.80'  '68.50'        '1'        '0'   \n",
       "75551  4873.622464               1      '4.45'  '69.75'        '1'        '0'   \n",
       "\n",
       "      wind_direction_angle pressure visibility precipitation light  holiday  \\\n",
       "0                    '359'    '977'      '9.7'           '0'   '0'      1.0   \n",
       "1                    '359'    '977'      '9.7'           '0'   '0'      1.0   \n",
       "2                    '359'    '977'      '9.7'           '0'   '0'      1.0   \n",
       "3                    '359'    '977'      '9.7'           '0'   '0'      1.0   \n",
       "4                    '335'    '976'      '8.6'           '0'   '0'      1.0   \n",
       "...                    ...      ...        ...           ...   ...      ...   \n",
       "75547                '250'    '976'      '5.2'           '0'   '0'      0.0   \n",
       "75548                '124'    '976'      '4.6'           '0'   '0'      0.0   \n",
       "75549                '124'    '976'      '4.6'           '0'   '0'      0.0   \n",
       "75550                '124'    '976'      '4.6'           '0'   '0'      0.0   \n",
       "75551                '124'    '976'      '4.6'           '0'   '0'      0.0   \n",
       "\n",
       "       minute  week  year  \n",
       "0         0.0   5.0   1.0  \n",
       "1        15.0   5.0   1.0  \n",
       "2        30.0   5.0   1.0  \n",
       "3        45.0   5.0   1.0  \n",
       "4        60.0   5.0   1.0  \n",
       "...       ...   ...   ...  \n",
       "75547  1365.0   7.0   3.0  \n",
       "75548  1380.0   7.0   3.0  \n",
       "75549  1395.0   7.0   3.0  \n",
       "75550  1410.0   7.0   3.0  \n",
       "75551  1425.0   7.0   3.0  \n",
       "\n",
       "[75552 rows x 15 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "6cf8f1ba",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 75552 entries, 0 to 75551\n",
      "Data columns (total 15 columns):\n",
      " #   Column                Non-Null Count  Dtype  \n",
      "---  ------                --------------  -----  \n",
      " 0   value                 75552 non-null  float64\n",
      " 1   weather_status        75552 non-null  int64  \n",
      " 2   temperature           75552 non-null  object \n",
      " 3   humidity              75552 non-null  object \n",
      " 4   wind_speed            75552 non-null  object \n",
      " 5   wind_level            75552 non-null  object \n",
      " 6   wind_direction_angle  75552 non-null  object \n",
      " 7   pressure              75552 non-null  object \n",
      " 8   visibility            75552 non-null  object \n",
      " 9   precipitation         75552 non-null  object \n",
      " 10  light                 75552 non-null  object \n",
      " 11  holiday               75552 non-null  float64\n",
      " 12  minute                75552 non-null  float64\n",
      " 13  week                  75552 non-null  float64\n",
      " 14  year                  75552 non-null  float64\n",
      "dtypes: float64(5), int64(1), object(9)\n",
      "memory usage: 8.6+ MB\n"
     ]
    }
   ],
   "source": [
    "new_data.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "75c249f2",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "将object类型数据两边的引号去掉，然后转为数值类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "905bb383",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "df_2 = new_data[['temperature', 'humidity', 'wind_speed', 'wind_level', 'wind_direction_angle', 'pressure', 'visibility', 'precipitation', 'light']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "47caeece",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>temperature</th>\n",
       "      <th>humidity</th>\n",
       "      <th>wind_speed</th>\n",
       "      <th>wind_level</th>\n",
       "      <th>wind_direction_angle</th>\n",
       "      <th>pressure</th>\n",
       "      <th>visibility</th>\n",
       "      <th>precipitation</th>\n",
       "      <th>light</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>'-8.6'</td>\n",
       "      <td>'41'</td>\n",
       "      <td>'0.5'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'359'</td>\n",
       "      <td>'977'</td>\n",
       "      <td>'9.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>'-8.88'</td>\n",
       "      <td>'43.00'</td>\n",
       "      <td>'0.5'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'359'</td>\n",
       "      <td>'977'</td>\n",
       "      <td>'9.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>'-9.16'</td>\n",
       "      <td>'45.00'</td>\n",
       "      <td>'0.5'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'359'</td>\n",
       "      <td>'977'</td>\n",
       "      <td>'9.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>'-9.44'</td>\n",
       "      <td>'47.00'</td>\n",
       "      <td>'0.5'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'359'</td>\n",
       "      <td>'977'</td>\n",
       "      <td>'9.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>'-9.7'</td>\n",
       "      <td>'49'</td>\n",
       "      <td>'0.7'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'335'</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'8.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75547</th>\n",
       "      <td>'5.85'</td>\n",
       "      <td>'64.75'</td>\n",
       "      <td>'1.6'</td>\n",
       "      <td>'17'</td>\n",
       "      <td>'250'</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'5.2'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75548</th>\n",
       "      <td>'5.5'</td>\n",
       "      <td>'66'</td>\n",
       "      <td>'1'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'124'</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'4.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75549</th>\n",
       "      <td>'5.15'</td>\n",
       "      <td>'67.25'</td>\n",
       "      <td>'1'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'124'</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'4.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75550</th>\n",
       "      <td>'4.80'</td>\n",
       "      <td>'68.50'</td>\n",
       "      <td>'1'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'124'</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'4.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75551</th>\n",
       "      <td>'4.45'</td>\n",
       "      <td>'69.75'</td>\n",
       "      <td>'1'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'124'</td>\n",
       "      <td>'976'</td>\n",
       "      <td>'4.6'</td>\n",
       "      <td>'0'</td>\n",
       "      <td>'0'</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>75552 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      temperature humidity wind_speed wind_level wind_direction_angle  \\\n",
       "0          '-8.6'     '41'      '0.5'        '0'                '359'   \n",
       "1         '-8.88'  '43.00'      '0.5'        '0'                '359'   \n",
       "2         '-9.16'  '45.00'      '0.5'        '0'                '359'   \n",
       "3         '-9.44'  '47.00'      '0.5'        '0'                '359'   \n",
       "4          '-9.7'     '49'      '0.7'        '0'                '335'   \n",
       "...           ...      ...        ...        ...                  ...   \n",
       "75547      '5.85'  '64.75'      '1.6'       '17'                '250'   \n",
       "75548       '5.5'     '66'        '1'        '0'                '124'   \n",
       "75549      '5.15'  '67.25'        '1'        '0'                '124'   \n",
       "75550      '4.80'  '68.50'        '1'        '0'                '124'   \n",
       "75551      '4.45'  '69.75'        '1'        '0'                '124'   \n",
       "\n",
       "      pressure visibility precipitation light  \n",
       "0        '977'      '9.7'           '0'   '0'  \n",
       "1        '977'      '9.7'           '0'   '0'  \n",
       "2        '977'      '9.7'           '0'   '0'  \n",
       "3        '977'      '9.7'           '0'   '0'  \n",
       "4        '976'      '8.6'           '0'   '0'  \n",
       "...        ...        ...           ...   ...  \n",
       "75547    '976'      '5.2'           '0'   '0'  \n",
       "75548    '976'      '4.6'           '0'   '0'  \n",
       "75549    '976'      '4.6'           '0'   '0'  \n",
       "75550    '976'      '4.6'           '0'   '0'  \n",
       "75551    '976'      '4.6'           '0'   '0'  \n",
       "\n",
       "[75552 rows x 9 columns]"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "b95e88c1",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "array2 = np.array(df_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "c7b1f523",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "for i in range(9):\n",
    "    a = [j[1: -1] for j in array2[:, i]]\n",
    "    a = pd.to_numeric(a)  # 也可使用float()\n",
    "    array2[:, i] = a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "97c40b24",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "array2 = array2.astype(dtype=np.float32)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8ba41889",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "新的dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "4d3bebe0",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "new_data[['temperature', 'humidity', 'wind_speed', 'wind_level', 'wind_direction_angle', 'pressure', 'visibility', 'precipitation', 'light']] = array2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "c4dd2e19",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 75552 entries, 0 to 75551\n",
      "Data columns (total 15 columns):\n",
      " #   Column                Non-Null Count  Dtype  \n",
      "---  ------                --------------  -----  \n",
      " 0   value                 75552 non-null  float64\n",
      " 1   weather_status        75552 non-null  int64  \n",
      " 2   temperature           75552 non-null  float32\n",
      " 3   humidity              75552 non-null  float32\n",
      " 4   wind_speed            75552 non-null  float32\n",
      " 5   wind_level            75552 non-null  float32\n",
      " 6   wind_direction_angle  75552 non-null  float32\n",
      " 7   pressure              75552 non-null  float32\n",
      " 8   visibility            75552 non-null  float32\n",
      " 9   precipitation         75552 non-null  float32\n",
      " 10  light                 75552 non-null  float32\n",
      " 11  holiday               75552 non-null  float64\n",
      " 12  minute                75552 non-null  float64\n",
      " 13  week                  75552 non-null  float64\n",
      " 14  year                  75552 non-null  float64\n",
      "dtypes: float32(9), float64(5), int64(1)\n",
      "memory usage: 6.1 MB\n"
     ]
    }
   ],
   "source": [
    "new_data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "09f424a5",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "new_data = new_data.astype(np.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "1278c796",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 75552 entries, 0 to 75551\n",
      "Data columns (total 15 columns):\n",
      " #   Column                Non-Null Count  Dtype  \n",
      "---  ------                --------------  -----  \n",
      " 0   value                 75552 non-null  float32\n",
      " 1   weather_status        75552 non-null  float32\n",
      " 2   temperature           75552 non-null  float32\n",
      " 3   humidity              75552 non-null  float32\n",
      " 4   wind_speed            75552 non-null  float32\n",
      " 5   wind_level            75552 non-null  float32\n",
      " 6   wind_direction_angle  75552 non-null  float32\n",
      " 7   pressure              75552 non-null  float32\n",
      " 8   visibility            75552 non-null  float32\n",
      " 9   precipitation         75552 non-null  float32\n",
      " 10  light                 75552 non-null  float32\n",
      " 11  holiday               75552 non-null  float32\n",
      " 12  minute                75552 non-null  float32\n",
      " 13  week                  75552 non-null  float32\n",
      " 14  year                  75552 non-null  float32\n",
      "dtypes: float32(15)\n",
      "memory usage: 4.3 MB\n"
     ]
    }
   ],
   "source": [
    "new_data.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5bc1cf9a",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "查看气象特征的数值分布，看看有没有异常值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "80518f9b",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0         1.0\n",
       "40732     1.0\n",
       "40733     1.0\n",
       "40734     1.0\n",
       "40735     1.0\n",
       "         ... \n",
       "7113     23.0\n",
       "7112     23.0\n",
       "7111     23.0\n",
       "7119     23.0\n",
       "7115     23.0\n",
       "Name: weather_status, Length: 75552, dtype: float32"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data['weather_status'].sort_values()  # 天气状态"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "074c22ae",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "weather_status\n",
       "1.0     35216\n",
       "2.0     15152\n",
       "3.0     14548\n",
       "11.0     3272\n",
       "7.0      2776\n",
       "19.0     2292\n",
       "21.0      808\n",
       "16.0      556\n",
       "20.0      436\n",
       "8.0       256\n",
       "12.0      136\n",
       "22.0       44\n",
       "9.0        36\n",
       "23.0       20\n",
       "15.0        4\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data['weather_status'].value_counts()  # 天气状态"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "a6cb01fd",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "604     -14.600000\n",
       "605     -14.570000\n",
       "603     -14.540000\n",
       "606     -14.540000\n",
       "607     -14.510000\n",
       "           ...    \n",
       "51811    40.759998\n",
       "51810    40.840000\n",
       "51807    40.849998\n",
       "51809    40.919998\n",
       "51808    41.000000\n",
       "Name: temperature, Length: 75552, dtype: float32"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data['temperature'].sort_values()  # 温度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "9179bfc1",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "12099      6.0\n",
       "12100      6.0\n",
       "12092      6.0\n",
       "12098      6.0\n",
       "12097      6.0\n",
       "         ...  \n",
       "53594    100.0\n",
       "53883    100.0\n",
       "53882    100.0\n",
       "54265    100.0\n",
       "53472    100.0\n",
       "Name: humidity, Length: 75552, dtype: float32"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data['humidity'].sort_values()  # 湿度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "423c5f2d",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "31805     0.0\n",
       "69607     0.0\n",
       "69606     0.0\n",
       "69605     0.0\n",
       "69604     0.0\n",
       "         ... \n",
       "589       9.2\n",
       "592      13.3\n",
       "595      13.3\n",
       "594      13.3\n",
       "593      13.3\n",
       "Name: wind_speed, Length: 75552, dtype: float32"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data['wind_speed'].sort_values()  # 风速"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "e33a10d5",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0         0.0\n",
       "36415     0.0\n",
       "36414     0.0\n",
       "36413     0.0\n",
       "36412     0.0\n",
       "         ... \n",
       "28779    17.0\n",
       "28784    17.0\n",
       "28785    17.0\n",
       "28787    17.0\n",
       "37775    17.0\n",
       "Name: wind_level, Length: 75552, dtype: float32"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data['wind_level'].sort_values()  # 风力等级"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "265b6a60",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "wind_level\n",
       "17.0    29791\n",
       "0.0     23249\n",
       "1.0     22296\n",
       "2.0       212\n",
       "3.0         4\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data['wind_level'].value_counts()  # 风力等级"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "e14144fe",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "29254      0.0\n",
       "25912      0.0\n",
       "25913      0.0\n",
       "25914      0.0\n",
       "25915      0.0\n",
       "         ...  \n",
       "56958    360.0\n",
       "56959    360.0\n",
       "59947    360.0\n",
       "39196    360.0\n",
       "59055    360.0\n",
       "Name: wind_direction_angle, Length: 75552, dtype: float32"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data['wind_direction_angle'].sort_values()  # 风向角"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "9cf95560",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "43011     857.0\n",
       "43010     857.0\n",
       "43009     857.0\n",
       "43008     857.0\n",
       "42995     861.0\n",
       "          ...  \n",
       "42999    1008.0\n",
       "44308    1018.0\n",
       "44309    1018.0\n",
       "44310    1018.0\n",
       "44311    1018.0\n",
       "Name: pressure, Length: 75552, dtype: float32"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data['pressure'].sort_values()  # 压力"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "9dd52af3",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "26222     0.1\n",
       "26223     0.1\n",
       "26229     0.1\n",
       "26221     0.1\n",
       "26231     0.1\n",
       "         ... \n",
       "16553    30.0\n",
       "16552    30.0\n",
       "16551    30.0\n",
       "16560    30.0\n",
       "58950    30.0\n",
       "Name: visibility, Length: 75552, dtype: float32"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data['visibility'].sort_values()  # 可见度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "11a66c30",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "visibility\n",
       "30.0    9720\n",
       "6.4     1992\n",
       "14.4    1492\n",
       "12.2     588\n",
       "5.4      512\n",
       "        ... \n",
       "0.6       16\n",
       "0.4       16\n",
       "0.3       12\n",
       "0.1        8\n",
       "0.5        4\n",
       "Name: count, Length: 299, dtype: int64"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data['visibility'].value_counts()  # 可见度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "76f23d41",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0         0.000000\n",
       "49750     0.000000\n",
       "49749     0.000000\n",
       "49748     0.000000\n",
       "49747     0.000000\n",
       "           ...    \n",
       "53875    15.200000\n",
       "53870    34.599998\n",
       "53869    34.599998\n",
       "53868    34.599998\n",
       "53871    34.599998\n",
       "Name: precipitation, Length: 75552, dtype: float32"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data['precipitation'].sort_values()  # 降水"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "27fb2bd4",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0          0.000000\n",
       "40226      0.000000\n",
       "40227      0.000000\n",
       "40228      0.000000\n",
       "40229      0.000000\n",
       "            ...    \n",
       "14163    998.409973\n",
       "49392    999.203369\n",
       "49394    999.203369\n",
       "49395    999.203369\n",
       "49393    999.203369\n",
       "Name: light, Length: 75552, dtype: float32"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data['light'].sort_values()  # 光照强度"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7f250363",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "气象数据未发现异常值。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ee2f05d3",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "风速和风力等级重复了，并且这个数据集里风力等级只有0，1，2，3，17这5种取值，所以删去风力等级(wind_level)列。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "ecadb44b",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "new_data = new_data.drop('wind_level', axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "a95929e2",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 75552 entries, 0 to 75551\n",
      "Data columns (total 14 columns):\n",
      " #   Column                Non-Null Count  Dtype  \n",
      "---  ------                --------------  -----  \n",
      " 0   value                 75552 non-null  float32\n",
      " 1   weather_status        75552 non-null  float32\n",
      " 2   temperature           75552 non-null  float32\n",
      " 3   humidity              75552 non-null  float32\n",
      " 4   wind_speed            75552 non-null  float32\n",
      " 5   wind_direction_angle  75552 non-null  float32\n",
      " 6   pressure              75552 non-null  float32\n",
      " 7   visibility            75552 non-null  float32\n",
      " 8   precipitation         75552 non-null  float32\n",
      " 9   light                 75552 non-null  float32\n",
      " 10  holiday               75552 non-null  float32\n",
      " 11  minute                75552 non-null  float32\n",
      " 12  week                  75552 non-null  float32\n",
      " 13  year                  75552 non-null  float32\n",
      "dtypes: float32(14)\n",
      "memory usage: 4.0 MB\n"
     ]
    }
   ],
   "source": [
    "new_data.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "199aa901",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "将new_data保存起来"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "1606edf6",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "new_data.to_csv('new_data.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "405f60bf",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "划分训练集和测试集，2021年和2022年的数据作为训练集，2023年的数据作为测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "83468651",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "# 可以之后再将2021、2022的数据和2023的部分数据作为训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "3d404be9",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "train = new_data.loc[:70079]\n",
    "test = new_data.loc[70080:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "c1a4883d",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "70080\n",
      "5472\n"
     ]
    }
   ],
   "source": [
    "print(len(train))\n",
    "print(len(test))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0c19029c",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "对训练集数据归一化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "22e15b29",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "scaler = MinMaxScaler()\n",
    "scaler = scaler.fit(train)  # fit，在这里本质是生成min(x)和max(x)\n",
    "train_result = scaler.transform(train)  # 结果为ndarray类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "73fa08a6",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  display: none;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  overflow: visible;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".estimator-table summary {\n",
       "    padding: .5rem;\n",
       "    font-family: monospace;\n",
       "    cursor: pointer;\n",
       "}\n",
       "\n",
       ".estimator-table details[open] {\n",
       "    padding-left: 0.1rem;\n",
       "    padding-right: 0.1rem;\n",
       "    padding-bottom: 0.3rem;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table {\n",
       "    margin-left: auto !important;\n",
       "    margin-right: auto !important;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(odd) {\n",
       "    background-color: #fff;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(even) {\n",
       "    background-color: #f6f6f6;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:hover {\n",
       "    background-color: #e0e0e0;\n",
       "}\n",
       "\n",
       ".estimator-table table td {\n",
       "    border: 1px solid rgba(106, 105, 104, 0.232);\n",
       "}\n",
       "\n",
       ".user-set td {\n",
       "    color:rgb(255, 94, 0);\n",
       "    text-align: left;\n",
       "}\n",
       "\n",
       ".user-set td.value pre {\n",
       "    color:rgb(255, 94, 0) !important;\n",
       "    background-color: transparent !important;\n",
       "}\n",
       "\n",
       ".default td {\n",
       "    color: black;\n",
       "    text-align: left;\n",
       "}\n",
       "\n",
       ".user-set td i,\n",
       ".default td i {\n",
       "    color: black;\n",
       "}\n",
       "\n",
       ".copy-paste-icon {\n",
       "    background-image: url();\n",
       "    background-repeat: no-repeat;\n",
       "    background-size: 14px 14px;\n",
       "    background-position: 0;\n",
       "    display: inline-block;\n",
       "    width: 14px;\n",
       "    height: 14px;\n",
       "    cursor: pointer;\n",
       "}\n",
       "</style><body><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>MinMaxScaler()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>MinMaxScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.preprocessing.MinMaxScaler.html\">?<span>Documentation for MinMaxScaler</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
       "        <div class=\"estimator-table\">\n",
       "            <details>\n",
       "                <summary>Parameters</summary>\n",
       "                <table class=\"parameters-table\">\n",
       "                  <tbody>\n",
       "                    \n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('feature_range',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">feature_range&nbsp;</td>\n",
       "            <td class=\"value\">(0, ...)</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('copy',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">copy&nbsp;</td>\n",
       "            <td class=\"value\">True</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('clip',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">clip&nbsp;</td>\n",
       "            <td class=\"value\">False</td>\n",
       "        </tr>\n",
       "    \n",
       "                  </tbody>\n",
       "                </table>\n",
       "            </details>\n",
       "        </div>\n",
       "    </div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
       "    // Get the parameter prefix from the closest toggleable content\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
       "\n",
       "    const originalStyle = element.style;\n",
       "    const computedStyle = window.getComputedStyle(element);\n",
       "    const originalWidth = computedStyle.width;\n",
       "    const originalHTML = element.innerHTML.replace('Copied!', '');\n",
       "\n",
       "    navigator.clipboard.writeText(fullParamName)\n",
       "        .then(() => {\n",
       "            element.style.width = originalWidth;\n",
       "            element.style.color = 'green';\n",
       "            element.innerHTML = \"Copied!\";\n",
       "\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        })\n",
       "        .catch(err => {\n",
       "            console.error('Failed to copy:', err);\n",
       "            element.style.color = 'red';\n",
       "            element.innerHTML = \"Failed!\";\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        });\n",
       "    return false;\n",
       "}\n",
       "\n",
       "document.querySelectorAll('.fa-regular.fa-copy').forEach(function(element) {\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "    const paramName = element.parentElement.nextElementSibling.textContent.trim();\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
       "\n",
       "    element.setAttribute('title', fullParamName);\n",
       "});\n",
       "</script></body>"
      ],
      "text/plain": [
       "MinMaxScaler()"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "2758961d",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(70080, 14)"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_result.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aed7a6a6",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "生成训练数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "5a5be234",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "#  将预测时刻的气象数据也作为输入，为了保证输入序列的特征数一致，将预测时刻输入的负荷设为1\n",
    "#  可以做个比较，有预测时刻的气象信息与没有预测时刻的气象信息。感觉有预测时刻的气象信息作为输入，模型预测准确性会受到天气预报准确性的影响。\n",
    "#  生成的样本起始时刻依次相差15分钟\n",
    "def create_inout_sequences(input_data, tw):\n",
    "    inout_seq = []\n",
    "    L = len(input_data)\n",
    "    for i in range(L-tw+1):\n",
    "        train_seq = copy.deepcopy(input_data[i:i+tw])\n",
    "        train_seq[96:tw, 0] = 1\n",
    "        train_label = input_data[i+96:i+tw, 0]\n",
    "        inout_seq.append((torch.tensor(train_seq) ,torch.tensor(train_label)))\n",
    "    return inout_seq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "5f0521a5",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "train_inout_seq = create_inout_sequences(train_result, 192)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "6c11e64a",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "69889"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(train_inout_seq)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "578e333e",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "训练样本的数量为69889，每个训练样本包括特征和标签，其中特征为前96个时刻和后96个时刻的气象数据和负荷值（后96个时刻的负荷值用1代替，只是占个位置，保证输入序列的特征数一致，没有实际含义），标签为后96个时刻的负荷值。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65529538",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "使用前24小时和未来24小时的数据预测未来24小时的负荷"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "239a7fee",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "设置批量大小为96"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "4e2bac91",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "trainloader = torch.utils.data.DataLoader(train_inout_seq, batch_size=96, shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "cab7339b",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "729"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(trainloader)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "9513c86f",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([96, 192, 14])\n",
      "torch.Size([96, 96])\n",
      "torch.Size([1, 192, 14])\n",
      "torch.Size([1, 96])\n"
     ]
    }
   ],
   "source": [
    "for i ,j in trainloader:\n",
    "    print(i.shape)\n",
    "    print(j.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ea4558a2",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "### 建立LSTM模型并训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "d30bb919",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "class LstmNet(nn.Module):\n",
    "    def __init__(self):\n",
    "        super().__init__()\n",
    "        \n",
    "        self.layer1 = nn.LSTM(14, 60, 1, batch_first=True)  # 这个lstm的输入为15个神经元，隐藏层的输出为50个神经元，每个训练样本一次训练这个lstm被重复执行了49次，\n",
    "        self.layer2 = nn.Linear(60, 1)  # 或者形象地说这个lstm结构在时间上的长度为49。\n",
    "        \n",
    "    def forward(self, x):\n",
    "        y1, _ = self.layer1(x)\n",
    "        y1 = y1[:, -96:, :]\n",
    "        y2 = self.layer2(y1)\n",
    "        return y2.reshape(-1, 96)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "b94d15ef",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "96"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "49*1*15; 15*50; 49*1*50; 49*50; 50*1; 49*1  # 批量大小为1\n",
    "49*64*15; 15*50; 49*64*50; 50*1; 49*64*1  # 批量大小为64\n",
    "192*1*15; 15*50; 192*1*50; 96*1*50; 96*50; 50*1; 96*1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "e3ce748c",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9216"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "96*192*15\n",
    "15*50\n",
    "96*192*50\n",
    "96*96*50\n",
    "50*1\n",
    "96*96*1\n",
    "96*96  # 批量大小为96，batch_first=True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "72fa3432",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "lstmnet = LstmNet()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "767fc975",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "lr = 0.001\n",
    "opt = optim.Adam(lstmnet.parameters(), lr=lr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "cdf10e65",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "loss_function = nn.MSELoss()  # 方差/平均平方误差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "4edbfb23",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "# 刚开始使用学习率为0.01训练，损失下降到0.001左右时，开始波动比较大，损失没有什么下降，然后使用学习率为0.003训练，然后使用学习率0.001训练。\n",
    "# 得到的损失最小值为0.0003左右。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "45e5bfb9",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.0544)\n",
      "tensor(0.0347)\n",
      "tensor(0.0302)\n",
      "tensor(0.0304)\n",
      "tensor(0.0282)\n",
      "tensor(0.0198)\n",
      "tensor(0.0224)\n",
      "tensor(0.0238)\n",
      "tensor(0.0181)\n",
      "tensor(0.0182)\n",
      "tensor(0.0177)\n",
      "tensor(0.0177)\n",
      "tensor(0.0179)\n",
      "tensor(0.0214)\n",
      "tensor(0.0194)\n",
      "tensor(0.0201)\n",
      "tensor(0.0131)\n",
      "tensor(0.0166)\n",
      "tensor(0.0162)\n",
      "tensor(0.0213)\n",
      "tensor(0.0169)\n",
      "tensor(0.0170)\n",
      "tensor(0.0173)\n",
      "tensor(0.0161)\n",
      "tensor(0.0144)\n",
      "tensor(0.0131)\n",
      "tensor(0.0182)\n",
      "tensor(0.0143)\n",
      "tensor(0.0149)\n",
      "tensor(0.0135)\n",
      "tensor(0.0166)\n",
      "tensor(0.0142)\n",
      "tensor(0.0162)\n",
      "tensor(0.0142)\n",
      "tensor(0.0096)\n",
      "tensor(0.0166)\n",
      "tensor(0.0187)\n",
      "tensor(0.0112)\n",
      "tensor(0.0133)\n",
      "tensor(0.0129)\n",
      "tensor(0.0164)\n",
      "tensor(0.0135)\n",
      "tensor(0.0120)\n",
      "tensor(0.0115)\n",
      "tensor(0.0181)\n",
      "tensor(0.0153)\n",
      "tensor(0.0108)\n",
      "tensor(0.0132)\n",
      "tensor(0.0172)\n",
      "tensor(0.0137)\n",
      "tensor(0.0091)\n",
      "tensor(0.0129)\n",
      "tensor(0.0148)\n",
      "tensor(0.0114)\n",
      "tensor(0.0125)\n",
      "tensor(0.0121)\n",
      "tensor(0.0087)\n",
      "tensor(0.0131)\n",
      "tensor(0.0112)\n",
      "tensor(0.0098)\n",
      "tensor(0.0096)\n",
      "tensor(0.0111)\n",
      "tensor(0.0112)\n",
      "tensor(0.0112)\n",
      "tensor(0.0134)\n",
      "tensor(0.0111)\n",
      "tensor(0.0113)\n",
      "tensor(0.0073)\n",
      "tensor(0.0106)\n",
      "tensor(0.0074)\n",
      "tensor(0.0096)\n",
      "tensor(0.0079)\n",
      "损失:\n",
      "tensor(0.0174)\n"
     ]
    }
   ],
   "source": [
    "epochs = 1\n",
    "for epoch in range(epochs):\n",
    "    i = 0\n",
    "    all_loss = 0\n",
    "    for xb, yb in trainloader:\n",
    "        y = lstmnet(xb)\n",
    "        loss = loss_function(y, yb)\n",
    "        loss.backward()\n",
    "        opt.step()\n",
    "        opt.zero_grad()\n",
    "        i += 1\n",
    "        all_loss += loss.data\n",
    "        if i%10 == 0:\n",
    "            print(loss.data)\n",
    "    print('损失:')\n",
    "    print(all_loss / len(trainloader))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "758b7903",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "### 预测"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "02ce1c5b",
   "metadata": {},
   "source": [
    "解决v_max v_min 未定义问题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "8f365a27",
   "metadata": {},
   "outputs": [],
   "source": [
    "v_max = max(train['value'])\n",
    "v_min = min(train['value'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "4460d89d",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0011182993634812012"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(300 / (v_max - v_min)) ** 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "121eee7a",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.00012425548483124458"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(100 / (v_max - v_min)) ** 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "12cded6c",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "test_result = scaler.transform(test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a2ac8a16",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "生成测试数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "fb8cdd39",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "test_seq = create_inout_sequences(test_result, 192)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "da550a2a",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5281"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(test_seq)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2a74ffc8",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "预测测试集里的某一样本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "2bb989fa",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "v_max = max(train['value'])\n",
    "v_min = min(train['value'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "08ff8ef8",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "pred = lstmnet(test_seq[1000][0].reshape(1, 192, 14))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "d4ea803f",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0.6392, 0.6440, 0.6442, 0.6420, 0.6429, 0.6412, 0.6391, 0.6377, 0.6423,\n",
       "         0.6482, 0.6533, 0.6581, 0.6603, 0.6621, 0.6654, 0.6697, 0.6744, 0.6749,\n",
       "         0.6760, 0.6777, 0.6756, 0.6758, 0.6764, 0.6767, 0.6675, 0.6655, 0.6650,\n",
       "         0.6645, 0.6623, 0.6564, 0.6519, 0.6485, 0.6449, 0.6429, 0.6413, 0.6397,\n",
       "         0.6325, 0.6294, 0.6258, 0.6214, 0.6171, 0.6120, 0.6066, 0.6011, 0.5946,\n",
       "         0.5890, 0.5836, 0.5784, 0.5743, 0.5717, 0.5678, 0.5629, 0.5571, 0.5513,\n",
       "         0.5456, 0.5400, 0.4787, 0.4504, 0.4335, 0.4218, 0.4119, 0.4041, 0.3968,\n",
       "         0.3897, 0.3830, 0.3762, 0.3693, 0.3624, 0.3544, 0.3486, 0.3441, 0.3405,\n",
       "         0.3453, 0.3460, 0.3480, 0.3522, 0.3586, 0.3668, 0.3768, 0.3886, 0.4015,\n",
       "         0.4165, 0.4340, 0.4544, 0.4747, 0.4991, 0.5255, 0.5527, 0.5834, 0.6110,\n",
       "         0.6355, 0.6564, 0.6795, 0.6949, 0.7044, 0.7087]],\n",
       "       grad_fn=<ViewBackward0>)"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "82a15a53",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([0.7438, 0.7479, 0.7525, 0.7546, 0.7566, 0.7574, 0.7340, 0.6965, 0.6058,\n",
       "        0.5454, 0.5497, 0.5459, 0.5520, 0.5751, 0.6282, 0.6901, 0.7053, 0.7180,\n",
       "        0.7231, 0.7245, 0.7289, 0.7326, 0.7373, 0.7423, 0.7494, 0.7569, 0.7621,\n",
       "        0.7644, 0.7519, 0.7399, 0.6878, 0.6572, 0.6601, 0.6830, 0.7160, 0.7424,\n",
       "        0.7512, 0.7533, 0.7480, 0.7448, 0.7371, 0.7361, 0.7352, 0.7323, 0.7238,\n",
       "        0.7156, 0.7050, 0.6902, 0.6684, 0.6499, 0.6277, 0.6015, 0.5719, 0.5347,\n",
       "        0.5085, 0.4784, 0.4558, 0.4380, 0.4276, 0.4187, 0.4123, 0.4054, 0.4012,\n",
       "        0.3985, 0.3931, 0.3883, 0.3853, 0.3809, 0.3779, 0.3724, 0.3692, 0.3671,\n",
       "        0.3663, 0.3658, 0.3635, 0.3650, 0.3642, 0.3646, 0.3648, 0.3666, 0.3673,\n",
       "        0.3725, 0.3763, 0.3835, 0.3991, 0.4210, 0.4496, 0.4904, 0.5608, 0.6409,\n",
       "        0.6738, 0.6920, 0.7003, 0.7079, 0.7155, 0.7194])"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_seq[1000][1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "f14d733d",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "true_label = test_seq[1000][1] * (v_max - v_min) + v_min\n",
    "true_label = true_label.detach().numpy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "471a0d0a",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "true_pred = pred * (v_max - v_min) + v_min\n",
    "true_pred = true_pred.reshape(96)\n",
    "true_pred = true_pred.detach().numpy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "df694830",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9EAAAFUCAYAAAAj0r8xAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAMTgAADE4Bf3eMIwAAkVVJREFUeJzs3Xd8jef/x/HXyY4VxE5sYpfYqdamdquUKorSoUatGNWapXQoLdqqKkpbSqmiqFl71N57JAiyRGSf8/vj/krrRyshOXfG+/l4nMeRk3Pf9+e0JOd9ruv6XBabzWZDRERERERERB7JwewCRERERERERNILhWgRERERERGRJFKIFhEREREREUkihWgRERERERGRJFKIFhEREREREUkihWgRERERERGRJHIyu4D/4urqSt68ec0uQ0RERERERDKJmzdvEhMT86/fT9MhOm/evAQEBJhdhoiIiIiIiGQS3t7e//l9TecWERERERERSSKFaBEREREREZEkUogWERERERERSaI0vSb6UaxWKzabzewyUp3FYsHBQZ93iIiIiIiImC1dhujY2FguX75MXFyc2aXYjbOzM0WKFMHFxcXsUkRERERERDKtdBmiL1++TPbs2fH09MRisZhdTqqz2WwEBwdz+fJlSpUqZXY5IiIiIiIimVa6C9FWq5W4uDg8PT1xckp35T82T09PQkJCsFqtmtotIiIiIiJiknSXxu6tgc4MI9D/dO/1ZoY14CIiIiIiImlVugvRIiIiIiIiImZ55HzohIQEhg0bhouLC9HR0fj4+PDGG28wYsQI4uLiCAsLo1OnTjRp0oSoqCj8/f1xcXEhODiYAQMG4OvrS3BwMMOGDcPDw4OQkBBGjx5NsWLF7PDyzBMTE4Orq2vi1zabjbi4OPbv30+hQoUoUqTIQ49bunQplStX1tpnERERERGRNOiRIXrDhg0UKFCAIUOGAPD8889TuHBhChQowMCBA7FarbRp04YGDRowZ84cGjVqRNu2bYmOjqZDhw6sWLGCSZMm0adPH3x9fQkKCmLw4MEsWLAg1V+cvZw4cYLXX38dJycnTpw4waJFixgzZgwAhw4donLlygC88sortGzZkldffZUOHTowffp0PD09CQ4O5qOPPqJw4cIcOnSIGjVqmPhqRERERERE5N88MkQXLFiQlStXAhAfH09cXBybN2+m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",
      "text/plain": [
       "<Figure size 1200x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rc('font',family='DengXian')\n",
    "plt.figure(figsize=(15, 5), dpi=80)\n",
    "\n",
    "X = np.linspace(0, 24, 96, endpoint=True)\n",
    "C,S = true_pred, true_label\n",
    "plt.plot(X, C, color='blue', label='预测')\n",
    "plt.plot(X, S, color='green', label='真实')\n",
    "plt.legend(loc='upper left')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b5cadb1c",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "采用绝对百分比误差（APE）对模型的预测准确度进行评价"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "abc38cbc",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "单个样本的APE：|y预测 - y真实| ÷ y真实 × 100%"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "116b8ba8",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "def APE_list(test_seq):  # 预测的每个24小时的平均APE组成的列表\n",
    "    list1 = []\n",
    "    for i in test_seq:\n",
    "        pred = lstmnet(i[0].reshape(1, 192, 14))\n",
    "        true_label = i[1] * (v_max - v_min) + v_min\n",
    "        true_label = true_label.detach().numpy()\n",
    "        true_pred = pred * (v_max - v_min) + v_min\n",
    "        true_pred = true_pred.reshape(96)\n",
    "        true_pred = true_pred.detach().numpy()\n",
    "        num = sum(abs(true_pred - true_label) / true_label) / 96\n",
    "        list1.append(num)\n",
    "\n",
    "    return list1\n",
    "#max(list1), min(list1)，list1.index()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e6b222a9",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "在训练数据上的APE(随机选取5000个样本)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "8a7664f1",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'14.898702260749754%'"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_samples = random.sample(train_inout_seq, 5000)\n",
    "list1 = APE_list(train_samples)\n",
    "str(sum(list1) / len(list1) * 100) + '%'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "89f62986",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.2772615524194593%\n",
      "2.206285492008685%\n"
     ]
    }
   ],
   "source": [
    "print(\"2.2772615524194593%\")\n",
    "print(\"2.206285492008685%\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a04031bb",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "训练数据5000个样本的APE分布的箱线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "647b2f09",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.boxplot(data=list1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "46538e11",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 0.1)"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.boxplot(data=list1)\n",
    "plt.ylim(0, 0.1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "08886a88",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "在测试数据上的APE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "1499a336",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'44.98145177531002%'"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list2 = APE_list(test_seq)\n",
    "str(sum(list2) / len(list2) * 100) + '%'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "5b6c8027",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "# 12.82968216754979%\n",
    "# 11.554603512965041%\n",
    "# 10.827513699236222%  保存了模型参数\n",
    "# 12.067778039869548%\n",
    "# 11.134349473801382%\n",
    "# 12.187801521781639%\n",
    "# 13.075773991825642%\n",
    "# 11.319367309684035%\n",
    "# 12.772845299314422%\n",
    "# 12.93004775791501%\n",
    "# 12.542951042622278%"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "33bb9be0",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "测试数据的APE分布的箱线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "a14fdd8a",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.boxplot(data=list2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "4ca38705",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 0.4)"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAGSCAYAAADXfQq4AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIjtJREFUeJzt3XFMXGXC7/EfFGYGnA6lvgUDUmtrzdqsFIYKLjSG2t0ot0mDhjUl3bTN0PQP3HVXE1lh42qTFaLpKlpJTE2tvV6MZXFpdqtNJY29WLqlQg2QgDZbXcEyOPS2d2DfMlMrc//wdvY9Dq09bd/lGfr9JJPteeY5zzwn2YSvZ4YhIRKJRAQAAGCAxJneAAAAwEWECQAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwBmECAACMQZgAAABjECYAAMAYtsNkbGxMa9euVXFxsQoLC7V///7Lzt+zZ49uueUWy1h3d7dKSkpUUlKiVatW6eTJk3a3AQAAZqEEu19J//Of/1zr169XeXm5zp49q9LSUrW3tysjIyNm7rfffqvVq1fr008/1ejoqCTp/Pnz8nq92rdvnxYtWqSenh499thj6uzsvD5XBAAA4patOybBYFCDg4MqLy+XJKWnp6uyslKtra3Tzn/rrbf00EMPWcba29u1cuVKLVq0SJJUUFCguXPnamBgwP7uAQDArJJkZ3JfX59yc3MtY16vV3v27ImZ+80332jnzp1qb29XQ0NDdPz48ePyer0xa/T09GjZsmUx64TDYYXD4ejx1NSUzpw5o5tvvlkJCQl2tg8AAGZIJBLRxMSEsrKylJh46fsitsLE7/crMzPTMpaRkSG/3x8z9/XXX9f69evlcrli1vh+3FxqDUlqaGjQ1q1b7WwTAAAYanh4WLfeeusln7cVJqFQSA6HwzLmcDgsdzQkaXJyUs3NzTp06NAVrzExMTHta9bW1uqJJ56IHgeDQS1cuFDDw8PyeDx2tm+Mv//973rsscd07kf/Q1OpN8/0dgAABks893+U+un7euWVV3THHXfM9Hau2vj4uHJycjR37tzLzrMVJi6XKyZCwuGwUlJSLGNNTU3avHmzkpOTr3qNi5xOp5xOZ8y4x+OJ2zBxu91KSkrSHIdLCc7prxsAAElKvOBSUlKS3G533P7c+69+6GMYtsIkKysr+ts1F42MjCg7Ozt6PDExoT//+c/66KOPbK3x/c+dAACAG4+t38rJy8tTb2+vZayrq0tFRUWW43/+859avXq1SktLVVpaqjNnzqi0tFSfffaZVqxYoe7u7suuAQAAbky27pi43W55vV61tLTokUceUSAQUFtbm+U7SH7605+qr6/Pct4tt9wS/bzJ4sWLVVNTo5MnT2rJkiXq6OiQy+XS4sWLr/1qAABAXLMVJpK0fft2+Xw+NTY2KhKJqKmpSR6PR/X19crPz1dZWdllz09OTtbu3bu1YcMGSd/Fzq5du65u9wAAYFaxHSbz58/X3r17Y8br6uouec73P1OSn5/PN70CAIAY/BE/AABgDMIEAAAYgzABAADGIEwAAIAxCBMAAGAMwgQAABiDMAEAAMYgTAAAgDEIEwAAYAzCBAAAGIMwAQAAxiBMAACAMQgTAABgDMIEAAAYgzABAADGIEwAAIAxCBMAAGAMwgQAABiDMAEAAMYgTAAAgDEIEwAAYAzCBAAAGIMwAQAAxiBMAACAMQgTAABgDMIEAAAYgzABAADGIEwAAIAxCBMAAGAMwgQAABiDMAEAAMYgTAAAgDEIEwAAYAzCBAAAGCPJ7gljY2OqqqrS6dOndeHCBW3dulVlZWWWOefOndOvfvUrffrpp/rmm2+0evVq1dfXKyEhQZK0dOlSZWZmRufPmzdP+/btu8ZLAQAA8c52mFRXV8vn86m8vFxnz55VaWmpCgoKlJGREZ3z7LPPavny5dq5c6e+/fZbPfLII3r77be1fv16SVJqaqoOHz58/a4CAADMCrbeygkGgxocHFR5ebkkKT09XZWVlWptbbXMO3v2rLZs2SJJmjNnjjZs2KCPPvroXy+ayDtIAAAglq1C6OvrU25urmXM6/Wqp6fHMvb666/L5XJFj7/55hulpqZKksLhsFJSUq52vwAAYBaz9VaO3++3fDZEkjIyMuT3+y95ztDQkF5++WXt2LFDkjQxMaHJyUlt3LhRX3zxhebPn68XXnhBd95557Tnh8NhhcPh6PH4+LidLQMAgDhi645JKBSSw+GwjDkcDks4XBQMBnXvvffq7rvv1ubNm3XXXXdJkiKRiJYtW6ann35aHR0dqqmp0Zo1axQKhaZ9zYaGBqWlpUUfOTk5drYMAADiiK0wcblcMRFyqbdm0tLSdPToUZ06dUoHDx7UG2+8IUlasGCBmpubdccdd0iSiouLVVhYqEOHDk37mrW1tQoGg9HH8PCwnS0DAIA4YitMsrKyNDo6ahkbGRlRdnb2Jc9xu91qaGhQU1PTJefk5OQoEAhM+5zT6ZTH47E8AADA7GQrTPLy8tTb22sZ6+rqUlFRUfT4woULeuihh2LOnTNnjiRpcHBQBw8etDw3NDSkhQsX2tkKAACYhWyFidvtltfrVUtLiyQpEAiora1NFRUV0TlJSUkKhUJ69913o2OvvvqqHnzwQUnffSbl8ccf18TEhCSpv79f/f39KikpueaLAQAA8c32F6xt375dPp9PjY2NikQiampqksfjUX19vfLz81VWVqadO3fq0Ucf1YsvvqipqSkVFBRo27ZtkqQlS5aorq5O999/v1wul1JTU9XS0qLk5OTrfnEAACC+2A6T+fPna+/evTHjdXV10X9nZWWpra3tkmusW7dO69ats/vSAABgluMrWAEAgDEIEwAAYAzCBAAAGIMwAQAAxiBMAACAMQgTAABgDMIEAAAYgzABAADGIEwAAIAxCBMAAGAMwgQAABiDMAEAAMYgTAAAgDEIEwAAYAzCBAAAGIMwAQAAxiBMAACAMQgTAABgDMIEAAAYgzABAADGIEwAAIAxCBMAAGAMwgQAABiDMAEAAMYgTAAAgDEIEwAAYAzCBAAAGIMwAQAAxiBMAACAMQgTAABgDMIEAAAYgzABAADGIEwAAIAxCBMAAGAM22EyNjamtWvXqri4WIWFhdq/f3/MnHPnzqmqqkolJSUqLCxUbW2tIpFI9Pnu7m6VlJSopKREq1at0smTJ6/tKgAAwKxgO0yqq6vl8/l05MgRHThwQE899ZQCgYBlzrPPPqvly5ers7NTf/vb33TixAm9/fbbkqTz589r06ZNam5uVmdnp7Zt26YNGzZcn6sBAABxzVaYBINBDQ4Oqry8XJKUnp6uyspKtba2WuadPXtWW7ZskSTNmTNHGzZs0EcffSRJam9v18qVK7Vo0SJJUkFBgebOnauBgYFrvBQAABDvbIVJX1+fcnNzLWNer1c9PT2Wsddff10ulyt6/M033yg1NVWSdPz4cXm93h9cAwAA3HiS7Ez2+/3KzMy0jGVkZMjv91/ynKGhIb388svasWNHdI3vx83l1giHwwqHw9Hj8fFxO1sGAABxxNYdk1AoJIfDYRlzOByWcLgoGAzq3nvv1d13363Nmzfrrrvusr2GJDU0NCgtLS36yMnJsbNlAAAQR2yFicvligmIcDislJSUmLlpaWk6evSoTp06pYMHD+qNN96wvYYk1dbWKhgMRh/Dw8N2tgwAAOKIrTDJysrS6OioZWxkZETZ2dmXPMftdquhoUFNTU1XtYbT6ZTH47E8AADA7GQrTPLy8tTb22sZ6+rqUlFRUfT4woULeuihh2LOnTNnjiRpxYoV6u7uvuwaAADgxmQrTNxut7xer1paWiRJgUBAbW1tqqioiM5JSkpSKBTSu+++Gx179dVX9eCDD0qSVq9erWPHjkW/VK2jo0Mul0uLFy++5osBAADxzdZv5UjS9u3b5fP51NjYqEgkoqamJnk8HtXX1ys/P19lZWXauXOnHn30Ub344ouamppSQUGBtm3bJklKTk7W7t27o1+q5na7tWvXrut7VQAAIC7ZDpP58+dr7969MeN1dXXRf2dlZamtre2Sa+Tn56uzs9PuSwMAgFmOP+IHAACMQZgAAABjECYAAMAYhAkAADAGYQIAAIxBmAAAAGMQJgAAwBiECQAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwBmECAACMQZgAAABjECYAAMAYhAkAADAGYQIAAIxBmAAAAGMQJgAAwBiECQAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwBmECAACMQZgAAABjECYAAMAYhAkAADAGYQIAAIxBmAAAAGMQJgAAwBiECQAAMAZhAgAAjEGYAAAAYxAmAADAGEl2TxgbG1NVVZVOnz6tCxcuaOvWrSorK7PMiUQieuaZZ9Te3q5IJCKv16uXXnpJTqdTkrR06VJlZmZG58+bN0/79u27xksBAADxznaYVFdXy+fzqby8XGfPnlVpaakKCgqUkZERnbNz506dOnVKnZ2dSkxM1K9//Ws1Njbqt7/9rSQpNTVVhw8fvn5XAQAAZgVbb+UEg0ENDg6qvLxckpSenq7Kykq1trZa5n311Vd68sknlZj43fJVVVX68MMP//WiibyDBAAAYtm6Y9LX16fc3FzLmNfr1Z49eyxjzz77rOV4cnJSbrdbkhQOh5WSknLFrxkOhxUOh6PH4+PjdrYMAADiiK1bF36/3/LZEEnKyMiQ3++/7Hm7d++Ofg5lYmJCk5OT2rhxo+677z6Vl5frxIkTlzy3oaFBaWlp0UdOTo6dLQMAgDhiK0xCoZAcDodlzOFwWO5ofN97772njz/+WBs3bpT03Qdjly1bpqefflodHR2qqanRmjVrFAqFpj2/trZWwWAw+hgeHrazZQAAEEdsvZXjcrliIuRyb80cOXJENTU1+uCDD5SU9N1LLViwQM3NzdE5xcXFKiws1KFDh/Tggw/GrOF0OqO/zQMAAGY3W2GSlZWl0dFRy9jIyIiys7Nj5g4MDGjz5s3661//Ou3z/1VOTo4CgYCdrQAAgFnI1ls5eXl56u3ttYx1dXWpqKjIMjY5OanKykrt3r1bS5YssTw3ODiogwcPWsaGhoa0cOFCO1sBAACzkK0wcbvd8nq9amlpkSQFAgG1tbWpoqLCMu+ll15SRUWF7rnnnpg1HA6HHn/8cU1MTEiS+vv71d/fr5KSkqu9BgAAMEvY/oK17du3y+fzqbGxUZFIRE1NTfJ4PKqvr1d+fr7Kysr01ltvKTU1VQcOHIied/HbXZcsWaK6ujrdf//9crlcSk1NVUtLi5KTk6/rhQEAgPhjO0zmz5+vvXv3xozX1dVF/z04OHjZNdatW6d169bZfWkAADDL8RWsAADAGIQJAAAwBmECAACMQZgAAABjECYAAMAYhAkAADAGYQIAAIxBmAAAAGMQJgAAwBiECQAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwBmECAACMQZgAAABjECYAAMAYhAkAADAGYQIAAIxBmAAAAGMQJgAAwBiECQAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwBmECAACMQZgAAABjECYAAMAYhAkAADAGYQIAAIxBmAAAAGMQJgAAwBiECQAAMIbtMBkbG9PatWtVXFyswsJC7d+/P2ZOJBLR73//e/3kJz/Rvffeq+rqaoXD4ejz3d3dKikpUUlJiVatWqWTJ09e21UAAIBZwXaYVFdXy+fz6ciRIzpw4ICeeuopBQIBy5ydO3fq1KlT6uzs1NGjR5WcnKzGxkZJ0vnz57Vp0yY1Nzers7NT27Zt04YNG67LxQAAgPhmK0yCwaAGBwdVXl4uSUpPT1dlZaVaW1st87766is9+eSTSkz8bvmqqip9+OGHkqT29natXLlSixYtkiQVFBRo7ty5GhgYuMZLAQAA8c5WmPT19Sk3N9cy5vV61dPTYxl79tln9aMf/Sh6PDk5KbfbLUk6fvy4vF7vD65xUTgc1vj4uOUBAABmJ1th4vf7lZmZaRnLyMiQ3++/7Hm7d+9WWVnZVa3R0NCgtLS06CMnJ8fOlgEAQByxFSahUEgOh8My5nA4LB9s/b733ntPH3/8sTZu3HhVa9TW1ioYDEYfw8PDdrYMAADiSJKdyS6XKyYgwuGwUlJSpp1/5MgR1dTU6IMPPlBSUtJVreF0OuV0Ou1sEwAAxClbd0yysrI0OjpqGRsZGVF2dnbM3IGBAW3evFl/+ctfLM/bWQMAANxYbIVJXl6eent7LWNdXV0qKiqyjE1OTqqyslK7d+/WkiVLLM+tWLFC3d3dP7gGAAC48dgKE7fbLa/Xq5aWFklSIBBQW1ubKioqLPNeeuklVVRU6J577olZY/Xq1Tp27Fj0S9U6Ojrkcrm0ePHiq70GAAAwS9j6jIkkbd++XT6fT42NjYpEImpqapLH41F9fb3y8/NVVlamt956S6mpqTpw4ED0vHnz5mnfvn1KTk7W7t27o1+q5na7tWvXrut3RQAAIG7ZDpP58+dr7969MeN1dXXRfw8ODl52jfz8fHV2dtp9aQAAMMvxR/wAAIAxCBMAAGAMwgQAABiDMAEAAMYgTAAAgDEIEwAAYAzCBAAAGIMwAQAAxiBMAACAMQgTAABgDMIEAAAYgzABAADGIEwAAIAxCBMAAGAMwgQAABiDMAEAAMYgTAAAgDEIEwAAYAzCBAAAGIMwAQAAxiBMAACAMQgTAABgDMIEAAAYgzABAADGIEwAAIAxCBMAAGAMwgQAABiDMAEAAMYgTAAAgDEIEwAAYAzCBAAAGIMwAQAAxiBMAACAMQgTAABgjCS7J4yNjamqqkqnT5/WhQsXtHXrVpWVlcXMC4VCqq6u1sDAgI4ePWp5bunSpcrMzIwez5s3T/v27buK7QMAgNnEdphUV1fL5/OpvLxcZ8+eVWlpqQoKCpSRkRGdMzo6qvXr12vNmjUaGBiIWSM1NVWHDx++tp0DAIBZx9ZbOcFgUIODgyovL5ckpaenq7KyUq2trZZ5X3/9tV577TU9/PDD079oIu8gAQCAWLbumPT19Sk3N9cy5vV6tWfPHsvY8uXLJUn/+Mc/YtYIh8NKSUm54tcMh8MKh8PR4/HxcRs7BgAA8cTWrQu/32/5bIgkZWRkyO/3X/EaExMTmpyc1MaNG3XfffepvLxcJ06cuOT8hoYGpaWlRR85OTl2tgwAAOKIrTAJhUJyOByWMYfDYbmj8UMikYiWLVump59+Wh0dHaqpqdGaNWsUCoWmnV9bW6tgMBh9DA8P29kyAACII7beynG5XDERYvetmQULFqi5uTl6XFxcrMLCQh06dEgPPvhgzHyn0ymn02lnmwAAIE7ZumOSlZWl0dFRy9jIyIiys7OvaRM5OTkKBALXtAYAAIh/tsIkLy9Pvb29lrGuri4VFRVd8RqDg4M6ePCgZWxoaEgLFy60sxUAADAL2QoTt9str9erlpYWSVIgEFBbW5sqKiqueA2Hw6HHH39cExMTkqT+/n719/erpKTEzlYAAMAsZPsL1rZv3y6fz6fGxkZFIhE1NTXJ4/Govr5e+fn5Kisr0yuvvKKWlhaFw2F99tlnWrlypW699Va98847WrJkierq6nT//ffL5XIpNTVVLS0tSk5O/u+4PgAAEEcSIpFIZKY3Ycf4+LjS0tIUDAbl8XhmejtX5cSJE9qyZYsmb79PUynzZno7AACDJU7+X6V80aEdO3bozjvvnOntXLUr/flt+44Jrp+ULzpmegsAABiFMJlB3DEBAPyQi3dMbhSEyQyaSpmnqZv+Y6a3AQCAMfhregAAwBiECQAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwBmECAACMQZgAAABjECYAAMAYhAkAADAGYQIAAIxBmAAAAGMQJgAAwBiECQAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwBmECAACMQZgAAABjECYAAMAYhAkAADAGYQIAAIxBmAAAAGMQJgAAwBiECQAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwBmECAACMYTtMxsbGtHbtWhUXF6uwsFD79++fdl4oFJLP59O9994b81x3d7dKSkpUUlKiVatW6eTJk/Z3DgAAZh3bYVJdXS2fz6cjR47owIEDeuqppxQIBCxzRkdHtWbNGv34xz+OOf/8+fPatGmTmpub1dnZqW3btmnDhg1XfwUAAGDWsBUmwWBQg4ODKi8vlySlp6ersrJSra2tlnlff/21XnvtNT388MMxa7S3t2vlypVatGiRJKmgoEBz587VwMDA1V0BAACYNWyFSV9fn3Jzcy1jXq9XPT09lrHly5dr6dKl065x/Phxeb3eH1wDAADceJLsTPb7/crMzLSMZWRkyO/321rj+3FzuTXC4bDC4XD0eHx83MaOAQBAPLF1xyQUCsnhcFjGHA6HJRyu9xoNDQ1KS0uLPnJycuxsGQAAxBFbYeJyuWICIhwOKyUl5b9tjdraWgWDwehjeHjYzpYBAEAcsfVWTlZWlkZHRy1jIyMjys7OvuY1vv+5k4ucTqecTqedbQIAgDhl645JXl6eent7LWNdXV0qKiq64jVWrFih7u7ua1oDAADMTrbCxO12y+v1qqWlRZIUCATU1tamioqKK15j9erVOnbsWPRL1To6OuRyubR48WI7WwEAALOQrbdyJGn79u3y+XxqbGxUJBJRU1OTPB6P6uvrlZ+fr7KyMr3yyitqaWlROBzWZ599ppUrV+rWW2/VO++8o+TkZO3evTv6pWput1u7du267hcGAADiT0IkEonM9CbsGB8fV1pamoLBoDwez0xv56qcOHFCW7Zs0X8uW6upm/5jprcDADBY4n+e1k0Df9GOHTt05513zvR2rtqV/vzmj/gBAABjECYAAMAYhAkAADAGYQIAAIxBmAAAAGMQJgAAwBiECQAAMAZhAgAAjEGYAAAAY9j+SnpcP4mh4ExvAQBguBvtZwVhMgPS0tKU7HBKn//vmd4KACAOJDucSktLm+lt/FsQJjMgMzNT/+ut/6lg8MaqYOCHfPnll3ruuef0u9/9TrfddttMbwcwRlpamjIzM2d6G/8WhMkMyczMvGH+TwbYddttt8X1HysDcPX48CsAADAGYQIAAIxBmAAAAGMQJgAAwBiECQAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwBmECAACMQZgAAABjECYAAMAYhAkAADAGYQIAAIxBmAAAAGMQJgAAwBiECQAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwRpLdE8bGxlRVVaXTp0/rwoUL2rp1q8rKymLmPf/88/rTn/6kxMREFRcX68UXX1Ri4ncdtHTpUmVmZkbnzps3T/v27buGywAAALOB7TCprq6Wz+dTeXm5zp49q9LSUhUUFCgjIyM65/3331dXV5eOHTumxMREPfHEE3rttddUXV0tSUpNTdXhw4ev31UAAIBZwdZbOcFgUIODgyovL5ckpaenq7KyUq2trZZ5u3btUk1NTfQOSU1Njd58881/vWgi7yABAIBYtgqhr69Pubm5ljGv16uenh7L2CeffKL8/Pzo8S233KKvv/5aU1NTCofDSklJuYYtAwCA2crWWzl+v9/y2RBJysjIkN/vt4ydO3dOTqfTMpaenq7Tp08rMTFRk5OT2rhxo7744gvNnz9fL7zwgu68885pXzMcDiscDkePx8fH7WwZAADEEVt3TEKhkBwOh2XM4XBYwkGSIpFIzLkX50UiES1btkxPP/20Ojo6VFNTozVr1igUCk37mg0NDUpLS4s+cnJy7GwZAADEEVth4nK5YiJkurdmEhISYs69OG/BggVqbm7WHXfcIUkqLi5WYWGhDh06NO1r1tbWKhgMRh/Dw8N2tgwAAOKIrbdysrKyNDo6ahkbGRlRdna2Zeymm27S5OSkJVjOnDmjm2++edp1c3JyFAgEpn3O6XTGvC0EAABmJ1t3TPLy8tTb22sZ6+rqUlFRkWWsoKDA8oHYzz//XLfffrsSEhI0ODiogwcPWuYPDQ1p4cKFdvcOAABmGVth4na75fV61dLSIkkKBAJqa2tTRUWFZV5VVZVeeOEFffvtt5Kk+vp6bdmyRdJ3nzV5/PHHNTExIUnq7+9Xf3+/SkpKrvliAABAfLP9BWvbt2+Xz+dTY2OjIpGImpqa5PF4VF9fr/z8fJWVlelnP/uZ+vr6VFhYqMTERD3wwAP6xS9+IUlasmSJ6urqdP/998vlcik1NVUtLS1KTk6+7hcHAADiS0Jkul+hMdj4+LjS0tIUDAbl8XhmejsArqMTJ05oy5Yt2rFjxyW/QgBAfLrSn998BSsAADAGYQIAAIxBmAAAAGPY/vArMNuEQiENDQ3N9DYg6csvv7T8L2bewoUL5XK5ZnobuIEQJrjhDQ0NRX+dHWZ47rnnZnoL+P/4IDL+3QgT3PAWLlyoHTt2zPQ2ACPx5Zf4dyNMcMNzuVz8FyEAGIIPvwIAAGMQJgAAwBiECQAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwBmECAACMQZgAAABjECYAAMAYhAkAADAGYQIAAIxBmAAAAGMQJgAAwBiECQAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwBmECAACMQZgAAABjECYAAMAYhAkAADAGYQIAAIxBmAAAAGMQJgAAwBiECQAAMAZhAgAAjGE7TMbGxrR27VoVFxersLBQ+/fvn3be888/rxUrVqiwsFC/+c1vNDU1FX2uu7tbJSUlKikp0apVq3Ty5MmrvwIAADBr2A6T6upq+Xw+HTlyRAcOHNBTTz2lQCBgmfP++++rq6tLx44d07Fjx5SYmKjXXntNknT+/Hlt2rRJzc3N6uzs1LZt27Rhw4brczUAACCu2QqTYDCowcFBlZeXS5LS09NVWVmp1tZWy7xdu3appqZGiYnfLV9TU6M333xTktTe3q6VK1dq0aJFkqSCggLNnTtXAwMD13YlAAAg7iXZmdzX16fc3FzLmNfr1Z49eyxjn3zyifLz86PHt9xyi77++mtNTU3p+PHj8nq9MWv09PRo2bJlMa8ZDocVDoejx8FgUJI0Pj5uZ+sAAGAGXfy5HYlELjvPVpj4/X5lZmZaxjIyMuT3+y1j586dk9PptIylp6fr9OnT8vv9MXEz3RoXNTQ0aOvWrTHjOTk5drYOAAAMMDExobS0tEs+bytMQqGQHA6HZczhcFjuaEjT19DFeZdaY2JiYtrXrK2t1RNPPBE9npqa0pkzZ3TzzTcrISHBzvYBGG58fFw5OTkaHh6Wx+OZ6e0AuI4ikYgmJiaUlZV12Xm2wsTlcsVESDgcVkpKimVsumC4OO9K17jI6XTG3H2ZN2+enW0DiDMej4cwAWahy90pucjWh1+zsrI0OjpqGRsZGVF2drZl7KabbtLk5KRl7OJdjitdAwAA3HhshUleXp56e3stY11dXSoqKrKMFRQUqKenJ3r8+eef6/bbb1dCQoJWrFih7u7uH1wDAADceGyFidvtltfrVUtLiyQpEAiora1NFRUVlnlVVVV64YUX9O2330qS6uvrtWXLFknS6tWrdezYseiXqnV0dMjlcmnx4sXXfDEA4pvT6dQzzzwT8/YtgBtHQuSHfm/ne86cOSOfz6dAIKBIJKLnn39e9913n+rr65Wfn6+ysjJJ0h//+Ee9/fbbSkxM1AMPPKA//OEP0TU++eQT/fKXv5T0Xey88cYbvJUDAADshwkAAMB/F/6IHwAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwBmECAACMQZgAAABjECYAAMAYhAkAADAGYQIAAIzx/wCNVob+UQ3FnwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.boxplot(data=list2)\n",
    "plt.ylim(0, 0.4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "900a09a7",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.037486181985210955"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "min(list2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "8abe4171",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.5983755898972354"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max(list2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "f7d75310",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "torch.save(lstmnet.state_dict(), 'lstmnet_2_5_1.pt')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "271e1c09",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "source": [
    "之后可和全连接神经网络的性能做个对比"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
